/** 基础怪物生成参数配置 */
export interface BaseMonsters {
  /** 怪物的唯一标识 */
  monsterId: number;
  /** 初始怪物数量 */
  baseCount: number;
  /** 同时存在的最大怪物数量 */
  maxConcurrent: number;
  /** 怪物重生的时间间隔 */
  respawnInterval: number;
  /** 怪物的生成区域 */
  spawnArea: {
    /** 生成区域的中心坐标 */
    center: {
      x: number;
      y: number;
      z: number;
    };
    /** 生成区域的半径 */
    radius: number;
  };
  /** 怪物的生成条件 */
  spawnConditions: {
    /** 怪物可生成的时间范围 */
    timeRange: number[];
    /** 怪物可生成的天气条件 */
    weather: string[];
    /** 生成怪物所需的任务进度 */
    requiredQuestProgress: number;
  };
}

/** 天气系统参数配置 */
export interface WeatherSystem {
  /** 初始的天气 */
  initialWeather: string;
  /** 天气池 */
  weatherPool: {
    /** 天气名称 */
    name: string;
    /** 天气持续时间范围 */
    duration: [number, number];
    /**  该天气出现的权重 */
    weight: number;
    /** 该天气对游戏的影响 */
    effects: {
      /** 能见度为 1.0（满值） */
      visibility: number;
      /** 耐力消耗倍数为 1.0（正常消耗） */
      staminaDrainMultiplier: number;
    };
  }[];
}

/** Npc生成配置 */
export interface NpcSpawns {
  /** NPC 的类型为任务发布者 */
  type: string;
  /** NPC 的位置坐标 */
  position: {
    x: number;
    y: number;
    z: number;
  };
  /** NPC 的旋转角度 */
  rotation: {
    x: number;
    y: number;
    z: number;
  };
  /** 与 NPC 的交互类型为对话 */
  interactionType: string;
  /** NPC 可提供的任务列表 */
  availableQuests: string[];
}

/** 地图全局规则配置 */
export interface GlobalRules {
  /** 最大死亡次数 */
  maxDeaths: number;
  /** 任务的时间限制 */
  timeLimit: number;
  /** 动态难度配置 */
  dynamicDifficulty: {
    /** 开启根据玩家数量调整难度 */
    playerCountScaling: boolean;
    /** 难度调整系数 */
    scaleFactors: {
      /** 怪物的生命值调整系数为 0.3 */
      monsterHealth: number;
      /** 怪物的伤害调整系数为 0.2 */
      monsterDamage: number;
    };
  };
  /** 事件触发条件及动作列表 */
  eventTriggers: {
    /** 触发条件为任务完成 */
    condition: string;
    /** 对应的任务标识 */
    value: string;
    /** 触发的动作是生成 BOSS */
    action: string;
  }[];
}

/* 关卡数据类型 */
export interface DBLevelType {
  /** 关卡id */
  id: number;
  /** 地图Id */
  mapId: number;
  /** 关卡名称 */
  name: string;
  /** 关卡描述 */
  description: string;
  /**  推荐的玩家等级范围 */
  recommendedLevel: [number, number];
  /** 地图上基础的怪物配置列表 */
  baseMonsters: BaseMonsters[];
  /** 天气系统 */
  weatherSystem: WeatherSystem;
  /** 地图NPC */
  npcSpawns: NpcSpawns[];
  /** 地图全局规则 */
  globalRules: GlobalRules;
}
